#pragma once

#include "Component.h"

namespace game_engine { namespace components
{

/*!
 * \class SimpleBehaviour
 * \brief 
 */
class SimpleBehaviour : public Component
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    SimpleBehaviour(void);
    SimpleBehaviour(GameObject *obj);
    virtual ~SimpleBehaviour(void);

    // Others
    virtual void initialize(void) throw(...);
    virtual void update(const FLOAT32 time);
    virtual void finalize(void);

    virtual void onEnter(void) throw(...) = 0;
    virtual void onLoop(const FLOAT32 time) throw(...) = 0;
    virtual void onExit(void) throw(...) = 0;

};

}}
